perm filename FNTSUB.F4[DRW,LCS] blob sn#099858 filedate 1974-12-13 generic text, type T, neo UTF8
00100	C DISPLAY IMAGE -----------------------------------------------------
00200		SUBROUTINE DPYIMG(IMG)
00300		COMMON/DB/DPYBUF(600),L(3,200),M/KNT/KNT,TOTAL
00400		IMPLICIT INTEGER(A-Z)
00500		CALL DPYSET(1,DPYBUF,400)
00600		LVL=SON(IMG)
00700		PGN0=SON(LVL)
00800		PGN=PGN0
00900		M=0
01000	100	CALL DPYPGN(PGN)
01100		PGN=CCW(PGN)
01200		IF(PGN.NE.PGN0)GO TO 100
01290		KNT=KNT+1
01300		IF(KNT.LT.TOTAL)GO TO 38
01400		CALL DPYOUT(1)
01600		KNT=0
01700		TYPE 36
01800		ACCEPT 37,Q,TOTAL
01900	38	IF(Q.EQ.'S')GO TO 1
02000	37	FORMAT(A1,I)
02100	36	FORMAT(' <CR>=GO ON.'/)
02200		IF(Q.NE.'X')RETURN
02300		END FILE(1)
02400		CALL CONV
02500	1	L(3,M)=-1
02600	C  END OF OBJECT
02700		DO 2 K=1,M
02800	2	WRITE(21,3)L(1,K),L(2,K),L(3,K)
02900	3	FORMAT(2I8,I11)
03000		END
03100	
03200	C  <CR>=DO NOT SAVE IT,  S=YES,  X=EXIT
03300	C  NUMBER AFTER LETTER OR BLANK SAVES SEVERAL.
03400	
03500		SUBROUTINE SAVE(J,K,N)
03600		COMMON/DB/DPYBUF(600),L(3,200),M
03700		M=M+1
03800		L(1,M)=J
03900		L(2,M)=K
04000		L(3,M)=N
04100		END
04200	
04300	C DISPLAY POLYGON ---------------------------------------------------
04400		SUBROUTINE DPYPGN(PGN)
04500		IMPLICIT INTEGER(A-Z)
04550		COMMON/KNT/KNT,TOTAL
04600		DATA SIZE/5/,MUP/1388/,MLR/1912/
04700		V0=SON(PGN)
04800		V=V0
04900		R=MUP-ROW(V)/SIZE
05000		C=COL(V)/SIZE-MLR
05100		CALL SAVE(C,R,200000000)
05200		CALL AIVECT(C,R)
05300	100	V=CCW(V)
05400		R=MUP-ROW(V)/SIZE
05500		C=COL(V)/SIZE-MLR
05600		CALL SAVE(C,R,0)
05700		CALL AVECT(C,R)
05800		IF(V.NE.V0)GO TO 100
05900		END
06000	
12100		SUBROUTINE CONV
12110		COMMON/DB/MM(600),L(3,200),M/LL/LL
12400		DIMENSION IB(200),ITOP(10),MORE(1),JL(10)
12405		EQUIVALENCE(IB,L)
12410		DATA JL/'A    B    C    D    E    F    G    H    I
12455		1    J    '/,B/5.0/
12480		NM=0
12500	1000	DO 100 K=1,11
12600	100	ITOP(K)=0
12800		KJ=1
12900		KN=1
13000		ITOP(1)=1
13100	1	FORMAT(' TYPE OUTPUT FILE NAME --  '$)
13200	3	FORMAT(2F,I)
13300	2	FORMAT(A5)
13700	14	KM=KJ
13800	5	READ(21,3,END=91)X,Y,LL
14000	C  LL=-1=END OF ITEM
14700	
14720		J=ISCALE(X,B)
14760		K=ISCALE(Y,B)
14780		IF(LL.EQ.0.AND.K.EQ.KK.AND.J.EQ.JJ)GO TO 5
14790		JJ=J
14795		KK=K
14797	C  AVOIDS DUPLICATE POINTS
14800	6	KJ=KJ+1
14900		CALL REPACK(KJ,J,K,MM)
15000	C  /9  BECAUSE DRAWING PROG. MULTS BY 9
15010		IF(LL)GO TO 7
15100		GO TO 5
15110	
15120	16	NM=NM+2
15125		TYPE 92,NM
15130		GO TO 15
15140	C  CHANGES LAST CHAR. OF NAME AUTOMATICALLY
15200	
15210	CC9	IF(NM.EQ.0)GO TO 8
15255	91	IF(KJ.NE.1)GO TO 16
15300		TYPE 99
15400		CALL EXIT
15500	99	FORMAT(' DELETE FOR21.DAT -- AND *.DMD')
15900	7	KJ=KJ+1
16000		MM(KM)=KJ-KM
16050	CC	IF(KN.EQ.10)GO TO 8
16100		KN=KN+1
16200		ITOP(KN)=KJ
16300		IF(KN.LT.11.AND.KJ.LT.500)GO TO 14
16400	C  10 ITEMS IN A FILE.  WD LIMIT IS 400 -- ENDS FILE IF >340.
16500		IF(NM.NE.0)GO TO 16
16600	8	TYPE 1
16700		ACCEPT 2,NM
16800	15	CALL OFILE(1,NM)
16900		WRITE(1,10),ITOP
17000	10	FORMAT(' 9999 ',10I5)
17100		M=1
17200	11	M=M+1
17300		J=ITOP(M-1)
17400		K=ITOP(M)-1
17500		IF(K)GO TO 12
17600	C  0=END
17700		N=0
17800		DO 13 JJ=J,K
17900		N=N+1
18000	13	IB(N)=MM(JJ)
18100	CC	IB(1)=N
18200		CALL SAVE2(IB)
18300		GO TO 11
18325	12	KN=KN-1
18350		WRITE(1,92)(JL(K),K=1,KN)
18375	92    FORMAT(' 9999 ',10A5)
18400		END FILE 1
18410		GO TO 1000
18500		END
18600	
18700		SUBROUTINE SAVE2(M)
18800		DIMENSION M(1)
18900		J=7
19000		L=8
19100		DO 12 K=1,M(1),8
19200		IF(K+J.LT.M(1))GO TO 12
19300		J=M(1)-K
19400		L=J+1
19500	12	WRITE(1,11)L,(M(NM),NM=K,K+J)
19600		RETURN
19700	11	FORMAT(' 9999',I3,8I10)
19800		END
19900	
20000		SUBROUTINE REPACK(K,M,N,I)
20100		COMMON/LL/L
20200		DIMENSION I(1)
20300		M=M*10000
20400		IF(M)M=10000000-M
20500		IF(N)N=1000-N
20600		IF(L.GT.0)M=M+L
20700		I(K)=M+N
20800		RETURN
20900		END
21000	
21100		INTEGER FUNCTION ISCALE(X,B)
21105	C   FOR ROUND OFF  WHEN SCALING.
21110	CC	DATA B/9.0/
21200		A=.5
21300		IF(X)A=-A
21400		ISCALE=X/B+A
21500		END